﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Pawn
{
    class VND
    {
        static String[] tu = new String[] { " không", " một", " hai", " ba", " bốn", " năm", " sáu", " bảy", " tám", " chín", " mười" };
        static String[] tu1 = new String[] { "", " mốt", " hai", " ba", " tư", " năm", " sáu", " bảy", " tám", " chín", " mười" };
        static String[] hang = new String[] { ""," nghìn"," triệu"," tỉ" };
        static String Doc2So(int so)
        {
            if (so <= 10) return tu[so];
            if (so < 20) return tu[10] + tu[so - 10];
            String buf = tu[so/10];
            if (so % 10 != 0) buf += " mươi" + tu1[so % 10];
            return buf;
        }
        public static String Doc3So(int so)
        {
            if (so == 0) return "";
            if (so % 100 == 0) return String.Format("{0} trăm", tu[so / 100]);
            return String.Format("{0} trăm{1}", tu[so / 100], so%100<10?" linh"+tu[so%100]:Doc2So(so % 100));
        }
        public static String Doc9So(Int64 so)
        {
            int i = 0;
            string buf = "";
            while (so > 0)
            {
                if (so % 1000 == 0) { }
                else if (so < 100) buf = Doc2So((int)(so % 1000)) + hang[i] + buf;
                else buf = Doc3So((int)(so % 1000))+hang[i]+buf;
                so = so / 1000;
                i++;
            }
            return buf;
        }
        public static String DocSo(Int64 so)
        {
            string buf = "";
            string duoi="";
            while (so > 0)
            {
                long a = so % 1000000000;
                
                buf = Doc9So(a) + duoi + buf;
                so /= 1000000000;
                duoi += hang[3];
            }
            return String.Format("{0}{1} đồng", buf.Substring(0, 2).ToUpper(), buf.Substring(2));;
        }
    }
}
